package com.hyw.encryption.provider.extractor;

import com.hyw.encryption.annotation.Decrypted;
import com.hyw.encryption.annotation.Encrypted;

/**
 * @author Hongyu
 */
public interface IKeyExtractor<T> {

  /**
   * 由于 {@link Decrypted}和{@link Encrypted}都有一个针对key输入,由于key的输入有可能来自于多种不同的业务渠道, 所以需要一个key值获取器.从业务上下文去完成
   * 
   * @param context
   *          key的搜索来源，具体由业务决定。以http请求为例，一般会在http header中附带相关的关键信息，则此处的context就可以是HttpHead
   * @param key
   *          目标值
   * @return
   */
  public String extract(T context, String key);
}
